package com.project.util;

import com.project.service.Servlet;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class AnntationServletFactory {
    private static Map <String, Servlet> servletMap = new HashMap<>();

    static {
        File file = new File("D:\\javabase\\jdbc1\\lisserver\\src\\main\\java\\com\\project\\service");
//        得到指定目录中所有的文件集合
        File [] filesList = file.listFiles();
//        判断文件对象是否为为文件，并且以.java结尾
        for (File f : filesList){
            if (f.isFile()&&f.getName().endsWith(".java")){
//                去掉.java后缀
                String fileNmae = f.getName().substring(0,f.getName().length()-5);
//                构建业务组件的全路径
                String classPath = "com.project.service."+fileNmae;

                try {
//                    加载类，得到模板
                    Class c = Class.forName(classPath);
                    if (c.isAnnotationPresent(WebServlet.class)) {//判断类中是否有WebServlet.class}
                      // 取出WebSrevlet注解
                        WebServlet webServlet = (WebServlet)c.getAnnotation(WebServlet.class);
//                        得到url路径
                        String url = webServlet.value();
                        servletMap.put(url,(Servlet) c.getConstructor().newInstance());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            }

    }
    public static Servlet getServet(String url){
        return servletMap.get(url);
    }
}
